# encoding=utf-8
from flask import Flask, abort, jsonify
from flask import request, make_response
from ihome import redis_store, constants
from ihome.utils.response_code import RET
from . import api
from ihome.utils.captcha.captcha import captcha

# 注册api的时候，访问前缀是api/v1.0
@api.route('/image_code')
def get_image_code():
    """
    1 取出图片编码
    2 生成图片验证码
    3 将图片验证码保存到redis数据库
    4 返回图片
    :return:
    """
    # 1 获取get请求中的cur_id, uuid生成的编码
    cur_id = request.args.get("cur_id")
    pre_id = request.args.get('pre_id')
    # 判断一下是否有cur_id的值
    if not cur_id:
        # 如果没有直接设置抛出异常，不在继续执行
        abort(403)
    # 2 生成图片验证码,image是图片，text是数字内容
    name, text, image = captcha.generate_captcha()
    # 3 将图片验证码保存到redis中,键，值，过期时间, 过期时间通过设定好的直接导入进来
    try:
        redis_store.set("Image_Code:" + cur_id, text, constants.IMAGE_CODE_REDIS_EXPIRES)
        if pre_id:
            redis_store.delete('Image_Code:' + pre_id)
    except Exception as e:
        print e
        return jsonify(errno=RET.DATAERR, errmsg="保存验证码数据失败")
    # 设置返回对象
    response = make_response(image)
    # 设置返回的数据的类型，大类型image,小类型jpg
    response.headers["Content-Type"] = "image/jpg"
    # 4 返回图片验证码
    return response



